/*
2021-7-14
https://www.acwing.com/problem/content/11/
*/
#include<iostream>
#include<cstring>
using namespace std;
const int mod=1e9+7, N=1010;

int f[N],g[N];
int n,m;

int main()
{
    cin>>n>>m;
    
    memset(f,-0x3f,sizeof f);
    f[0]=0;
    g[0]=1;
    
    for(int i=0;i<n;i++)
    {
        int v,w;
        cin>>v>>w;
        for(int j=m;j>=v;j--)
        {
            int cnt=0;
            int maxv=max(f[j],f[j-v]+w);
            if(maxv==f[j]) cnt+=g[j];
            if(maxv==f[j-v]+w) cnt+=g[j-v];
            cnt%=mod;
            f[j]=maxv;
            g[j]=cnt;
        }
    }
    
    int res=0;
    for(int i=0;i<=m;i++) res=max(res,f[i]);
    
    int cnt=0;
    for(int i=0;i<=m;i++)
        if(res==f[i])
            cnt=(cnt+g[i])%mod;
    
    cout<<cnt<<endl;
    
    return 0;
}
